home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / dev_libs / feelin040718 / sources / shade / renderbuffer.c < prev    next >
C/C++ Source or Header  |  2004-08-03  |  1KB  |  69 lines

  1. #include "Private.h"
  2.  
  3. ///CreateRPBitMap
  4. struct RastPort * CreateRPBitMap(UWORD Width,UWORD Height,struct Screen *Scr)
  5. {
  6.    struct RastPort  *rp;
  7.    struct BitMap    *frn = (Scr) ? Scr -> RastPort.BitMap : NULL;
  8.  
  9.    if (rp = F_New(sizeof (struct RastPort)))
  10.    {
  11.       InitRastPort(rp);
  12.  
  13.       if (rp -> BitMap = AllocBitMap(Width,Height,GetBitMapAttr(frn,BMA_DEPTH),BMF_INTERLEAVED,frn))
  14.       {
  15.          return rp;
  16.       }
  17.       F_Dispose(rp);
  18.    }
  19.    return NULL;
  20. }
  21. //+
  22. ///DeleteRPBitMap
  23. void DeleteRPBitMap(struct RastPort *rpb)
  24. {
  25.    if (rpb)
  26.    {
  27.       if (rpb -> BitMap) FreeBitMap(rpb -> BitMap);
  28.       F_Dispose(rpb);
  29.    }
  30. }
  31. //+
  32. ///CreateRenderBuffer
  33. struct FeelinRender * CreateRenderBuffer(UWORD Width,UWORD Height,struct FeelinRender *Friend)
  34. {
  35.    struct Screen *scr;
  36.  
  37.    if (scr = (APTR) F_Get(Friend -> Display,(ULONG) "FA_Display_Screen"))
  38.    {
  39.       struct RastPort *rp;
  40.  
  41.       if (rp = CreateRPBitMap(Width,Height,scr))
  42.       {
  43.          struct FeelinRender *render;
  44.  
  45.          if (render = F_NewObj(FC_Render,
  46.                                FA_Render_Friend,   Friend,
  47.                                FA_Render_RPort,    rp,
  48.                                TAG_DONE))
  49.          {
  50.             return render;
  51.          }
  52.       }
  53.       DeleteRPBitMap(rp);
  54.    }
  55.    return NULL;
  56. }
  57. //+
  58. ///DeleteRenderBuffer
  59. void DeleteRenderBuffer(struct FeelinRender *Render)
  60. {
  61.    if (Render)
  62.    {
  63.       DeleteRPBitMap(Render -> RPort);
  64.  
  65.       F_DisposeObj(Render);
  66.    }
  67. }
  68. //+
  69.